package com.xuecheng.content.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.xuecheng.api.content.model.dto.CourseBaseDTO;
import com.xuecheng.api.content.model.qo.QueryCourseModel;
import com.xuecheng.api.content.model.vo.CourseBaseVO;
import com.xuecheng.common.domain.page.PageRequestParams;
import com.xuecheng.common.domain.page.PageVO;
import com.xuecheng.content.entity.CourseBase;

import java.util.List;

/**
 * <p>
 * 课程基本信息 服务类
 * </p>
 *
 * @author itcast
 * @since 2021-12-08
 */
public interface CourseBaseService extends IService<CourseBase> {

    /**
     * 查询所有
     *
     * @return java.util.List<com.xuecheng.content.entity.CourseBaseDTO>
     * @author Lily
     * @date 2021/12/8 19:20
     * @paramType []
     * @description 查询课程基本信息
     */
    List<CourseBase> queryAll();

    /**
     * 查询课程基地名单
     *
     * @param params 分页参数
     * @param model  查询参数
     * @param companyId  公司id
     * @return com.xuecheng.common.domain.page.PageVO
     * @author Lily
     * @date 2021/12/8 20:54
     * @paramType [com.xuecheng.common.domain.page.PageRequestParams, com.xuecheng.api.content.model.qo.QueryCourseModel]
     * @description
     */
    PageVO queryCourseBaseList(PageRequestParams params, QueryCourseModel model, Long companyId);

    /**
     * 创建基础课程内容
     *
     * @param courseBaseDTO CourseBaseDTO 将前端传递的vo数据封装成dto数据
     * @return com.xuecheng.api.content.model.dto.CourseBaseDTO
     * @author Lily
     * @date 2021/12/11 16:25
     * @paramType [com.xuecheng.api.content.model.vo.CourseBaseVO]
     * @description
     * 需要将前端传递的 vo 数据，转成 dto 数据，防止黑客知道数据库的字段名
     */
    CourseBaseDTO createCourseBase(CourseBaseDTO courseBaseDTO);


    /**
     * 修改基础课程内容
     *
     * @param courseBaseDTO CourseBaseDTO 将前端传递的vo数据封装成dto数据
     * @return com.xuecheng.api.content.model.dto.CourseBaseDTO
     * @author Lily
     * @date 2021/12/11 16:25
     * @paramType [com.xuecheng.api.content.model.vo.CourseBaseVO]
     * @description
     * 需要将前端传递的 vo 数据，转成 dto 数据，防止黑客知道数据库的字段名
     */
    CourseBaseDTO modifyCourseBase(CourseBaseDTO courseBaseDTO);


    /**
     * 根据id删除课程基础
     *
     * @param courseBaseId 课程基础id
     * @param companyId 公司id
     * @author Lily
     * @date 2021/12/11 23:02
     * @paramType [java.lang.Long]
     * @description
     */
    void removeCourseBase(Long courseBaseId, Long companyId);


    /**
     * 通过课程id和公司id查询数据
     *
     * @param courseId  课程id
     * @param companyId 公司id
     * @return com.xuecheng.content.entity.CourseBase
     * @author Lily
     * @date 2021/12/12 22:28
     * @paramType [java.lang.Long, java.lang.Long]
     * @description
     */
    CourseBase getCourseBaseById(Long courseId, Long companyId);


    /**
     * 提交课程基础
     *
     * @param courseBaseId 课程基础id
     * @param companyId    公司标识
     * @author Lily
     * @date 2021/12/13 20:14
     * @paramType [java.lang.Long, java.lang.Long]
     * @description
     */
    void commitCourseBase(Long courseBaseId, Long companyId);

    /**
     * 课程审核
     * @param courseBaseDTO 课程基础dto
     * @author Lily
     * @date 2021/12/13 21:58
     * @paramType [com.xuecheng.api.content.model.dto.CourseBaseDTO]
     * @description
     */
    void approve(CourseBaseDTO courseBaseDTO);
}
